Ionic অ্যাপ্লিকেশনে টেস্টিং একটি গুরুত্বপূর্ণ অংশ, কারণ এটি আপনাকে অ্যাপ্লিকেশনের স্থিতিশীলতা এবং কার্যকারিতা নিশ্চিত করতে সাহায্য করে। টেস্টিংয়ের মাধ্যমে আপনি নিশ্চিত করতে পারেন যে অ্যাপের বিভিন্ন অংশ সঠিকভাবে কাজ করছে।
Ionic অ্যাপে টেস্টিং সাধারণত Unit Testing এবং End-to-End (E2E) Testing এর মাধ্যমে করা হয়।
এখানে Ionic অ্যাপে Test Cases তৈরি এবং চালানোর পদ্ধতি ব্যাখ্যা করা হলো।
১. Unit Testing (উইন্ডো স্তরের টেস্টিং)
Unit Testing হল একটি প্রক্রিয়া যেখানে আপনার কোডের একটি নির্দিষ্ট অংশ (যেমন ফাংশন বা মেথড) পরীক্ষিত হয়। Ionic অ্যাপে Unit Testing সাধারণত Jasmine এবং Karma ব্যবহার করে করা হয়।
১.১ Karma এবং Jasmine সেটআপ
Ionic প্রকল্পে Karma এবং Jasmine এর মাধ্যমে টেস্টিং করার জন্য প্রথমে কিছু প্রয়োজনীয় প্যাকেজ ইনস্টল করতে হবে।
npm install --save-dev karma karma-chrome-launcher karma-jasmine karma-jasmine-html-reporter @angular-devkit/build-angular
১.২ Test Case তৈরি করা
Ionic অ্যাপে Test Case তৈরি করতে হলে, আপনাকে .spec.ts ফাইল ব্যবহার করতে হবে। এটি ঐ কম্পোনেন্ট বা সার্ভিসের সাথে সম্পর্কিত টেস্ট ফাইল হবে।
উদাহরণ হিসেবে, HomePage কম্পোনেন্টের জন্য একটি unit test ফাইল তৈরি করা হলো।
- প্রথমে home.page.ts ফাইলটিতে একটি সিম্পল ফাংশন তৈরি করুন:
import { Component } from '@angular/core';
@Component({
selector: 'app-home',
templateUrl: './home.page.html',
styleUrls: ['./home.page.scss'],
})
export class HomePage {
constructor() {}
// একটি সিম্পল ফাংশন
addNumbers(a: number, b: number): number {
return a + b;
}
}
- তারপর home.page.spec.ts ফাইলে unit test কোড লিখুন:
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { HomePage } from './home.page';
describe('HomePage', () => {
let component: HomePage;
let fixture: ComponentFixture<HomePage>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [ HomePage ],
})
.compileComponents();
fixture = TestBed.createComponent(HomePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
it('should add two numbers correctly', () => {
const result = component.addNumbers(2, 3);
expect(result).toBe(5);
});
});
এখানে:
- beforeEach: প্রতিটি টেস্ট কেস চলানোর আগে প্রস্তুতি নেয়।
- it(): প্রতিটি টেস্ট কেসের জন্য একটি শর্ত নির্ধারণ করা হয়।
- expect(): এখানে অ্যাসারশন করা হয়েছে যে,
addNumbers()ফাংশনটি সঠিকভাবে কাজ করবে।
১.৩ Unit Test চালানো
Unit Test চালানোর জন্য কমান্ড:
ng test
এটি Karma ব্যবহার করে আপনার টেস্ট চালাবে এবং টেস্ট রেজাল্ট ব্রাউজারে দেখাবে।
২. End-to-End (E2E) Testing
End-to-End Testing (E2E) হল অ্যাপ্লিকেশনের পুরো ফ্লো টেস্ট করা। এখানে পুরো অ্যাপ্লিকেশন চালানোর সময় বিভিন্ন ইন্টারঅ্যাকশন পরীক্ষা করা হয়। Ionic অ্যাপে Protractor এবং Cypress জনপ্রিয় টুল যা E2E টেস্টিংয়ের জন্য ব্যবহৃত হয়।
২.১ Protractor Setup
Ionic প্রকল্পে E2E টেস্টিং করার জন্য Protractor ব্যবহার করতে হবে।
প্রথমে, Protractor সেটআপ করতে হবে।
npm install --save-dev protractor
২.২ E2E Test Case তৈরি করা
Ionic অ্যাপে E2E টেস্ট করার জন্য e2e/specs ফোল্ডার তৈরি হয়। এখানে home.page.e2e-spec.ts ফাইলের মাধ্যমে E2E টেস্ট করা যাবে।
import { browser, by, element } from 'protractor';
describe('HomePage', () => {
it('should display a title', () => {
browser.get('/');
let title = element(by.css('ion-title')).getText();
expect(title).toEqual('Home');
});
it('should add two numbers correctly', () => {
browser.get('/');
let input1 = element(by.id('input1'));
let input2 = element(by.id('input2'));
let result = element(by.id('result'));
input1.sendKeys('2');
input2.sendKeys('3');
let button = element(by.id('addButton'));
button.click();
expect(result.getText()).toBe('5');
});
});
এখানে:
- browser.get('/'): অ্যাপ্লিকেশনকে হোম পেজে নিয়ে যাবে।
- element(by.css()): DOM থেকে উপাদান নির্বাচন করা হয়।
২.৩ E2E Test চালানো
E2E টেস্ট চালাতে:
ng e2e
এটি আপনার Ionic অ্যাপের পুরোপুরি ইন্টারঅ্যাকশনের জন্য পরীক্ষা চালাবে এবং ব্রাউজারে ফলাফল দেখাবে।
৩. CI/CD ইন্টিগ্রেশন (Continuous Integration/Continuous Deployment)
CI/CD প্রক্রিয়া ব্যবহার করে টেস্টগুলো স্বয়ংক্রিয়ভাবে চালানো যায়। GitHub Actions বা GitLab CI এর মাধ্যমে আপনি Ionic অ্যাপ এর Unit Test এবং E2E Test স্বয়ংক্রিয়ভাবে চালাতে পারবেন।
উদাহরণ: GitHub Actions CI/CD পিপলাইন
name: CI
on:
push:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v2
with:
node-version: '14'
- name: Install dependencies
run: npm install
- name: Run tests
run: npm test
এখানে, GitHub Actions এর মাধ্যমে আপনি Unit Test চালাতে পারবেন এবং CI/CD পিপলাইন তৈরি করতে পারবেন।
সারাংশ
- Unit Testing: Ionic অ্যাপে নির্দিষ্ট ফাংশন এবং মেথড পরীক্ষা করার জন্য Jasmine এবং Karma ব্যবহার করা হয়।
- End-to-End Testing: অ্যাপ্লিকেশনের পুরো ফ্লো পরীক্ষা করতে Protractor বা Cypress ব্যবহার করা হয়।
- Test Automation: GitHub Actions বা GitLab CI/CD পিপলাইন ব্যবহার করে টেস্টগুলো স্বয়ংক্রিয়ভাবে চালানো যায়।
এটি আপনার অ্যাপ্লিকেশনকে আরও স্থিতিশীল এবং কার্যকরী করার জন্য সহায়ক হবে।
Read more